//
//  NSString + Extention.swift
//  TJSinaWeibo
//
//  Created by 唐后能 on 16/4/27.
//  Copyright © 2016年 itheima. All rights reserved.
//

import UIKit

extension String {
    
    /*
        1.获取微博文本中的所有表情字符串
        2.根据表情字符串(名称)获取表情模型
        3.将emoticon模型转成带图片附件的属性文本
        4.将微博内容中的表情名称替换成属性文本
    */
    /// 将微博内容中的表情字符串替换成表情图片
    func emoticonNameTextToPicAttText() -> NSAttributedString {
        // 将转入的普通文本转成属性文本,方便后面替换表情名称为属性文本
        let attrText = NSMutableAttributedString(string: self)
        
        // 1.在微博内容中找到表情字符串 [任何内容]   正则表达式
        let pattern = "\\[.*?\\]"
        let regular = try! NSRegularExpression(pattern: pattern, options: NSRegularExpressionOptions.DotMatchesLineSeparators)
        
        // 匹配
        let results = regular.matchesInString(self, options: [], range: NSRange(location: 0, length: characters.count))
        
        // 反过来遍历
        for result in results.reverse() {
            // 一个结果有一个范围
            //            let num = result.numberOfRanges
            //            print("num: \(num)")
            let range = result.rangeAtIndex(0)
            //            print("range: \(range)")
            
            // as 后面不需要? !
            // string as NSString
            // [] as NSArray
            // [:] as NSDictionary
            // 截取匹配好的表情图片名称
            let emoticonName = (self as NSString).substringWithRange(range)
//            print("匹配的结果: \(emoticonName)")
            
            // 2.用表情名称去找模型: 因为表情图片和表情名称是存在模型中的 *
            if let emoticonModel = TJEmotion.emoticonNameToEmoticonModel(emoticonName) {
                // 3.将emoticon模型转成带图片附件的属性文本 *
                let attrM = emoticonModel.emotionModelToAttrString(UIFont.systemFontOfSize(15))
                
                // 4.将微博内容中的表情名称替换成属性文本
                attrText.replaceCharactersInRange(range, withAttributedString: attrM)
            }
        }
        
        return attrText
    }
}

